package com.feign;
/*
 * @Author 罗俊
 * @date 2020/11/30 - 8:21 下午
 *
 */

import com.vo.ReqSkuVo;
import feign.*;

import java.util.Map;

/**
 * @RequestLine 标记在方法上，定义其请求方式和请求路径（Uri Template）
 * 请求路径以斜杠开始，中间可以使用{变量名称}，{变量名称}的值由 @Param 注解提供
 *
 * @Param 标记在方法的参数上，定义变量模版，可以通过表达式{变量名称}引用变量的值
 * @Heander 定义请求头，可以使用{变量名称}，表达式的值由 @Param 提供
 * @QueryMap 修饰方法的参数，定义 pojo 或者 map类型的参数
 * @HeaderMap 修饰方法的参数，定义Map类型的请求头
 * @Body 修饰方法，对 @Param 扩展，配合 @Header 使用可定义 JSON，xml类型参数
 */
public interface ProductApi {

    /**
     *
     * 根据当前页和每页显示的记录数来获取spuInfo分页列表
     * @param currentPage
     * @param size
     * @return
     */
    @RequestLine("GET /pms/spuinfo/list/{currentPage}/{size}")
    String getSpuInfo(@Param("currentPage") Integer currentPage, @Param("size") Integer size);

    @RequestLine("GET /pms/spuinfo/list/{currentPage}/{size}")
    String getSpuInfoByPojo(@QueryMap ReqSkuVo reqSkuVo,@Param("currentPage") Integer currentPage, @Param("size") Integer size);

    /**
     * POST json、form表单请求
     * 条件搜索spu
     * @param data
     * @return
     */
    //请求方式POST，请求路径/pms/spuinfo/searchSpuByCondition/{currentIndex}/{size}
    @RequestLine("POST /pms/spuinfo/searchSpuByCondition/{currentIndex}/{size}")
    //请求头表单提交方式
//    @Headers("Content-Type: application/x-www-form-urlencoded;charset=UTF-8")
    @Headers("Content-Type: application/json; charset=UTF-8")
    //参数格式name1=value1&name2=value2，参数值由@Param对应提供
    @Body("{data}")
    String searchSpuByCondition(@Param("data") String data,
                                @Param("currentIndex") Integer currentIndex,
                                @Param("size") Integer size);


    //请求方式GET 请求路径/find，参数值由@QueryMap 提供，自动添加到uri后面
    @RequestLine("POST /pms/spuinfo/searchSpuByCondition/{currentIndex}/{size}")
    String getSpuInfoByMap(/*@QueryMap Map<String, Object> queryMap,*/@HeaderMap Map<String,Object> headerMap,
                           @Param("currentPage") Integer currentPage,@Param("size")Integer size);
}
